#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <Stdbool.h>

  struct TreeNode {
      int val;
      struct TreeNode *left;
      struct TreeNode *right;
 };

bool isUnivalTree(struct TreeNode* root) {
    if(root==NULL)
    return true;
        // 若左子树存在，且值与根节点不同，直接返回false
    if (root->left != NULL && root->val != root->left->val)
        return false;
    
    // 若右子树存在，且值与根节点不同，直接返回false
    if (root->right != NULL && root->val != root->right->val)
        return false;
        
    return isUnivalTree(root->left)&&isUnivalTree(root->right);
}
